package cn.bulibuqi.myblog.handler;

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;

/**
 * @author bulibuqi
 * @create 2021-12-17:22
 */
//拦截标注contoller注解的拦截器（controllerAdvice)

@Slf4j
@ControllerAdvice
public class ControllerExceptionHander {


//    出现异常时变量所有的handlerExceptionResolvers-》找到默认的系统解析器 第一个解析器会把异常保存到request域中
//    handlerExceptionResolverComposite（这里有三个异常解析器）中的ExceptionHander解析器，这个解析器会搜索是否
//      带有exceptionHander的方法，有的话就使用这个方法处理


    //表示改方法可以做异常处理哦，代表处理exception级别的异常
    @ExceptionHandler(Exception.class)
    public ModelAndView exceptionHander(HttpServletRequest request,Exception e){

        ModelAndView mv = new ModelAndView();
        mv.addObject("url",request.getRequestURL());
        mv.addObject("exception",e);
        log.error("异常是：{}",e);
        mv.setViewName("error/error");
        return mv;

    }
}
